#-*- coding: utf8 -*-
from tutor.scripts import *
from tutor.plugins.sympy import *

while True:
    with display_block('Entradas'):
        a = One * oneof(-2, -1, 1, 2)
        vars = (x, y)
        func = (1 / x + x * y / a ** 3 + 1 / y).expand()

    with display_block('Resultados'):
        p1 = (a, a)
        _pts = set([p1])
        iter = 0
        while len(_pts) < 7:
            iter += 1
            if iter > 50:
                break
            aa, bb = oneof(_pts)
            if oneof(True, False):
                _k = One * oneof(-1, -1, -1, -1, 0, 0, 1, 2, 3) / oneof(-1, -1, -1, -1, 1, 2, 3)
                aa *= _k
                bb *= _k
            elif oneof(True, False):
                bb *= One * oneof(-1, -1, -1, -1, 0, 0, 1, 2, 3) / oneof(-1, -1, -1, -1, 1, 2, 3)
            else:
                aa, bb = bb, aa

            if (aa, bb) not in _pts and (aa or bb):
                _pts.add((aa, bb))
        _pts.remove(p1)
        p2, p3, p4, p5, p6, p7 = _pts

        if a > 0:
            tipo = u'mínimo'
        else:
            tipo = u'máximo'

        # Define tipos errados
        tipos = set(u'mínimo máximo sela falha'.split())
        tipos.remove(tipo)
        tipoE1 = tipos.pop()
        tipoE2 = tipos.pop()
        tipoE3 = tipos.pop()

        if len(set([p1, p2, p3, p4, p5, p6, p7])) != 7:
            continue
        else:
            break
